<?php
    class Projeto_Usuario extends Projeto_Clientes{
        
        private $codigo;
        private $login;
        private $senha;
        private $ultimologin;
        private $nivel;
        
        public function __construct(){
            parent::__construct();
            
            $this->codigo = 0;
            $this->login = '';
            $this->senha = '';
            $this->ultimologin = '';
            $this->nivel = '';
        }
        
        public function setCodigo($value){
            $this->codigo = (int)$value;
        }
        
        public function getCodigo(){
            return $this->codigo;
        }
        
        public function setLogin($value){
            $this->login = Util_Util::LimpaStringCompleta($value);
        }
        
        public function getLogin(){
            return $this->login;
        }
        
        public function setUltimoLogin($value){
            $this->ultimologin = Util_Util::LimpaStringCompleta($value);
        }
        
        public function getUltimoLogin(){
            return $this->ultimologin;
        }
        
        public function setSenha($value){
            $this->senha = Util_Util::LimpaStringCompleta($value);
        }
        
        public function getSenha(){
            return $this->senha;
        }
        
        public function setNivel($value){
            $this->nivel = Util_Util::LimpaStringCompleta($value);
        }
        
        public function getNivel(){
            return $this->nivel;
        }
		
		public function Carrega(){
			$db = new DB_Connect();
			$query = ("SELECT codigo, nome, login, senha, ultimo_login, nivel FROM usuarios WHERE codigo = '{$this->getCodigo()}'");
			$resultado = $db->Query($query);
			if(!$resultado->NumRows()){
				throw new Exception("Não foi possivel encontrar o usuário!");
			}else{
				$dados = $resultado->FetchObject();
				$this->setCodigo($dados->codigo);
				$this->setNome($dados->nome);
				$this->setLogin($dados->login);
				$this->setUltimoLogin($dados->ultimo_login);
				$this->setSenha($dados->senha);
				$this->setNivel($dados->nivel);
			}
		}
		
		public function Editar(){
			$db = new DB_Connect();
			$query = ("UPDATE usuarios SET nome = '{$this->getNome()}', login = '{$this->getLogin()}', nivel = '{$this->getNivel()}' WHERE codigo = '{$this->getCodigo()}'");
			if(!$db->Query($query)){
				throw new Exception("Não foi possivel alterar os dados do usuário!");
			}
		}
		
		public function AlteraSenha($senha, $confirmacao){
			if($senha == $confirmacao){
			
				$db = new DB_Connect();
				$query = ("UPDATE usuarios SET senha = MD5('$senha')");
				if(!$db->Query($query)){
					throw new Exception("A senha não pode ser alterada!");
				}
			}else{
				throw new Exception("A senha e a confirmação devem ser iguais!");
			}
		}
		
		public function Inserir(){
			$db = new DB_Connect();
			$query = ("SELECT codigo FROM usuarios WHERE login = '{$this->getLogin()}'");
			if($db->Query($query)->NumRows()){
				throw new Exception("Já existe um usuário com este login!");
			}else{
				$query = ("INSERT INTO usuarios SET nome = '{$this->getNome()}', login = '{$this->getLogin()}', senha = MD5('{$this->getSenha()}'), nivel = '{$this->getNivel()}'");
				if(!$db->Query($query)){
					throw new Exception("O usuário não pode ser inserido!");
				}
			}
		}
		
		public function Deletar(){
			$sessao = new Projeto_Sessao();
			$userLogado = $sessao->getVarSessao('codAdmin');
			
			$db = new DB_Connect();
			$query = ("DELETE FROM usuarios WHERE codigo = '{$this->getCodigo()}' AND codigo != '$userLogado'");
			if(!$db->Query($query)){
				throw new Exception("O usuário não pode ser excluido!");
			}
		}
		
		public function Lista(){
			$db = new DB_Connect();
			$query = ("SELECT codigo FROM usuarios");
			$resultado = $db->Query($query);
			if(!$resultado->NumRows()){
				throw new Exception("Não há usuários cadastrados no sistema!");
			}else{
				$arrDados = array();
				while($dados = $resultado->FetchObject()){
					$arrDados[] = $dados;
				}
				return $arrDados;
			}
		}
    }
?>
